﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： D3D9Buffer.cc
// 作者：   671643387@qq.com
// 日期：   2015年11月3日 下午2:26:24
// 简介：    
///////////////////////////////////////////////////////////////////////////////

#include <cassert>

#include "D3D9Buffer.hpp"
using namespace dx9;

D3D9Buffer::D3D9Buffer()
    : ::graphics::graphics::component::Buffer()
    , d3d9VB_(NULL)
    , d3d9IB_(NULL)
{

}

D3D9Buffer::~D3D9Buffer()
{
    if (d3d9VB_)
        d3d9VB_->Release();
    if (d3d9IB_)
        d3d9IB_->Release();
}

///////////////////////////////////////////////////////////////////////////////

void* D3D9Buffer::GetVertices()
{
    assert(d3d9VB_ != NULL);
    void* ppVB = NULL;
    if (SUCCEEDED(d3d9VB_->Lock(0, 0, &ppVB, 0)))
    {
        return ppVB;
    }
    return NULL;
}

void* D3D9Buffer::GetIndices()
{
    assert(d3d9IB_ != NULL);
    void* ppIB = NULL;
    if (SUCCEEDED(d3d9IB_->Lock(0, 0, &ppIB, 0)))
    {
        return ppIB;
    }
    return NULL;
}

///////////////////////////////////////////////////////////////////////////////

void D3D9Buffer::SetVB(LPDIRECT3DVERTEXBUFFER9 vb)
{
    d3d9VB_ = vb;
}

void D3D9Buffer::SetIB(LPDIRECT3DINDEXBUFFER9 ib)
{
    d3d9IB_ = ib;
}